
#include "ModuleKeyspointsOpening.h"

void ModuleKeyspointsOpening::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	win=new QWidget();
  layout=new QVBoxLayout(win);
	sb_radius=new QSpinBox(win);
	sb_radius->setPrefix("rayon=");
	sb_radius->setRange(0,1000);	

	sb_number=new QSpinBox(win);
	sb_number->setPrefix("nombre=");
	sb_number->setRange(0,1000);	

	layout->addWidget(sb_radius);
	layout->addWidget(sb_number);
}
////////////////////////////////////////////////////////////////////////////////
void ModuleKeyspointsOpening::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleKeyspointsOpening::process()
{
	cvKeyspointsOpening(keyspoints,sb_number->value(),sb_radius->value());
	return keyspoints;
}
////////////////////////////////////////////////////////////////////////////////
void ModuleKeyspointsOpening::setInput(int n,const cv::Mat & m)
{
	if(n==0)
	{	
		keyspoints=m.clone();
	}
}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleKeyspointsOpening::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleKeyspointsOpening::getName()
{
	return tr("Keypoints Opening");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleKeyspointsOpening::nbInputs()
{
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleKeyspointsOpening::setParams(QString params)
{
	QStringList list_params=params.split(";");
		
	if(list_params.size()==2)
	{
		sb_radius->setValue(list_params[0].toInt());
		sb_number->setValue(list_params[1].toInt());
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleKeyspointsOpening::getParams()
{
	return QString::number(sb_radius->value())+tr(";")+
				 QString::number(sb_number->value());
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleKeyspointsOpening::help(int id)
{
	if(id==-2)
	{
		return tr("Supprime les points de densité trop faible");
	}
	else if(id==-1)
	{
		return tr("keyspoints");
	}
	else if(id==0)
	{
		return tr("keyspoints");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
Q_EXPORT_PLUGIN2(ModuleKeyspointsOpening_plugin,ModuleKeyspointsOpening);  
